/**
 */
package org.mro.grib.model.files.secondEdition.grids.impl;

import java.nio.ByteBuffer;

import org.eclipse.emf.common.notify.Notification;

import org.eclipse.emf.ecore.EClass;

import org.eclipse.emf.ecore.impl.ENotificationImpl;

import org.mro.grib.model.files.secondEdition.grids.GridDefinitionTemplate31000;
import org.mro.grib.model.files.secondEdition.grids.GridsPackage;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Grid Definition Template31000</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getNumberOfHorizontalPoints <em>Number Of Horizontal Points</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getBasicAngleOfTheInitialProductionDomain <em>Basic Angle Of The Initial Production Domain</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getSubdivisionsOfBasicAngle <em>Subdivisions Of Basic Angle</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getLatitudeOfFirstGridPoint <em>Latitude Of First Grid Point</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getLongitudeOfFirstGridPoint <em>Longitude Of First Grid Point</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getScanningMode <em>Scanning Mode</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getLatitudeOfLastGridPoint <em>Latitude Of Last Grid Point</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getLongitudeOfLastGridPoint <em>Longitude Of Last Grid Point</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getTypeOfHorizontalLine <em>Type Of Horizontal Line</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getNumberOfVerticalPoints <em>Number Of Vertical Points</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getPhysicalMeaningOfVerticalCoordinate <em>Physical Meaning Of Vertical Coordinate</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getVerticalDimensionCoordinateValuesDefinition <em>Vertical Dimension Coordinate Values Definition</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getNumberOfCoefficients <em>Number Of Coefficients</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31000Impl#getCoefficientsOffset <em>Coefficients Offset</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class GridDefinitionTemplate31000Impl extends EarthShapeGridDefinitionImpl implements GridDefinitionTemplate31000 {
	/**
	 * The default value of the '{@link #getNumberOfHorizontalPoints() <em>Number Of Horizontal Points</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfHorizontalPoints()
	 * @generated
	 * @ordered
	 */
	protected static final int NUMBER_OF_HORIZONTAL_POINTS_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getNumberOfHorizontalPoints() <em>Number Of Horizontal Points</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfHorizontalPoints()
	 * @generated
	 * @ordered
	 */
	protected int numberOfHorizontalPoints = NUMBER_OF_HORIZONTAL_POINTS_EDEFAULT;

	/**
	 * The default value of the '{@link #getBasicAngleOfTheInitialProductionDomain() <em>Basic Angle Of The Initial Production Domain</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getBasicAngleOfTheInitialProductionDomain()
	 * @generated
	 * @ordered
	 */
	protected static final int BASIC_ANGLE_OF_THE_INITIAL_PRODUCTION_DOMAIN_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getBasicAngleOfTheInitialProductionDomain() <em>Basic Angle Of The Initial Production Domain</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getBasicAngleOfTheInitialProductionDomain()
	 * @generated
	 * @ordered
	 */
	protected int basicAngleOfTheInitialProductionDomain = BASIC_ANGLE_OF_THE_INITIAL_PRODUCTION_DOMAIN_EDEFAULT;

	/**
	 * The default value of the '{@link #getSubdivisionsOfBasicAngle() <em>Subdivisions Of Basic Angle</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSubdivisionsOfBasicAngle()
	 * @generated
	 * @ordered
	 */
	protected static final int SUBDIVISIONS_OF_BASIC_ANGLE_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getSubdivisionsOfBasicAngle() <em>Subdivisions Of Basic Angle</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSubdivisionsOfBasicAngle()
	 * @generated
	 * @ordered
	 */
	protected int subdivisionsOfBasicAngle = SUBDIVISIONS_OF_BASIC_ANGLE_EDEFAULT;

	/**
	 * The default value of the '{@link #getLatitudeOfFirstGridPoint() <em>Latitude Of First Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudeOfFirstGridPoint()
	 * @generated
	 * @ordered
	 */
	protected static final int LATITUDE_OF_FIRST_GRID_POINT_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLatitudeOfFirstGridPoint() <em>Latitude Of First Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudeOfFirstGridPoint()
	 * @generated
	 * @ordered
	 */
	protected int latitudeOfFirstGridPoint = LATITUDE_OF_FIRST_GRID_POINT_EDEFAULT;

	/**
	 * The default value of the '{@link #getLongitudeOfFirstGridPoint() <em>Longitude Of First Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLongitudeOfFirstGridPoint()
	 * @generated
	 * @ordered
	 */
	protected static final int LONGITUDE_OF_FIRST_GRID_POINT_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLongitudeOfFirstGridPoint() <em>Longitude Of First Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLongitudeOfFirstGridPoint()
	 * @generated
	 * @ordered
	 */
	protected int longitudeOfFirstGridPoint = LONGITUDE_OF_FIRST_GRID_POINT_EDEFAULT;

	/**
	 * The default value of the '{@link #getScanningMode() <em>Scanning Mode</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getScanningMode()
	 * @generated
	 * @ordered
	 */
	protected static final byte SCANNING_MODE_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getScanningMode() <em>Scanning Mode</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getScanningMode()
	 * @generated
	 * @ordered
	 */
	protected byte scanningMode = SCANNING_MODE_EDEFAULT;

	/**
	 * The default value of the '{@link #getLatitudeOfLastGridPoint() <em>Latitude Of Last Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudeOfLastGridPoint()
	 * @generated
	 * @ordered
	 */
	protected static final int LATITUDE_OF_LAST_GRID_POINT_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLatitudeOfLastGridPoint() <em>Latitude Of Last Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudeOfLastGridPoint()
	 * @generated
	 * @ordered
	 */
	protected int latitudeOfLastGridPoint = LATITUDE_OF_LAST_GRID_POINT_EDEFAULT;

	/**
	 * The default value of the '{@link #getLongitudeOfLastGridPoint() <em>Longitude Of Last Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLongitudeOfLastGridPoint()
	 * @generated
	 * @ordered
	 */
	protected static final int LONGITUDE_OF_LAST_GRID_POINT_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLongitudeOfLastGridPoint() <em>Longitude Of Last Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLongitudeOfLastGridPoint()
	 * @generated
	 * @ordered
	 */
	protected int longitudeOfLastGridPoint = LONGITUDE_OF_LAST_GRID_POINT_EDEFAULT;

	/**
	 * The default value of the '{@link #getTypeOfHorizontalLine() <em>Type Of Horizontal Line</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTypeOfHorizontalLine()
	 * @generated
	 * @ordered
	 */
	protected static final byte TYPE_OF_HORIZONTAL_LINE_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getTypeOfHorizontalLine() <em>Type Of Horizontal Line</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTypeOfHorizontalLine()
	 * @generated
	 * @ordered
	 */
	protected byte typeOfHorizontalLine = TYPE_OF_HORIZONTAL_LINE_EDEFAULT;

	/**
	 * The default value of the '{@link #getNumberOfVerticalPoints() <em>Number Of Vertical Points</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfVerticalPoints()
	 * @generated
	 * @ordered
	 */
	protected static final short NUMBER_OF_VERTICAL_POINTS_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getNumberOfVerticalPoints() <em>Number Of Vertical Points</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfVerticalPoints()
	 * @generated
	 * @ordered
	 */
	protected short numberOfVerticalPoints = NUMBER_OF_VERTICAL_POINTS_EDEFAULT;

	/**
	 * The default value of the '{@link #getPhysicalMeaningOfVerticalCoordinate() <em>Physical Meaning Of Vertical Coordinate</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getPhysicalMeaningOfVerticalCoordinate()
	 * @generated
	 * @ordered
	 */
	protected static final byte PHYSICAL_MEANING_OF_VERTICAL_COORDINATE_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getPhysicalMeaningOfVerticalCoordinate() <em>Physical Meaning Of Vertical Coordinate</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getPhysicalMeaningOfVerticalCoordinate()
	 * @generated
	 * @ordered
	 */
	protected byte physicalMeaningOfVerticalCoordinate = PHYSICAL_MEANING_OF_VERTICAL_COORDINATE_EDEFAULT;

	/**
	 * The default value of the '{@link #getVerticalDimensionCoordinateValuesDefinition() <em>Vertical Dimension Coordinate Values Definition</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getVerticalDimensionCoordinateValuesDefinition()
	 * @generated
	 * @ordered
	 */
	protected static final byte VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getVerticalDimensionCoordinateValuesDefinition() <em>Vertical Dimension Coordinate Values Definition</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getVerticalDimensionCoordinateValuesDefinition()
	 * @generated
	 * @ordered
	 */
	protected byte verticalDimensionCoordinateValuesDefinition = VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION_EDEFAULT;

	/**
	 * The default value of the '{@link #getNumberOfCoefficients() <em>Number Of Coefficients</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfCoefficients()
	 * @generated
	 * @ordered
	 */
	protected static final short NUMBER_OF_COEFFICIENTS_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getNumberOfCoefficients() <em>Number Of Coefficients</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfCoefficients()
	 * @generated
	 * @ordered
	 */
	protected short numberOfCoefficients = NUMBER_OF_COEFFICIENTS_EDEFAULT;

	/**
	 * The default value of the '{@link #getCoefficientsOffset() <em>Coefficients Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCoefficientsOffset()
	 * @generated
	 * @ordered
	 */
	protected static final long COEFFICIENTS_OFFSET_EDEFAULT = 0L;

	/**
	 * The cached value of the '{@link #getCoefficientsOffset() <em>Coefficients Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCoefficientsOffset()
	 * @generated
	 * @ordered
	 */
	protected long coefficientsOffset = COEFFICIENTS_OFFSET_EDEFAULT;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected GridDefinitionTemplate31000Impl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return GridsPackage.Literals.GRID_DEFINITION_TEMPLATE31000;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getNumberOfHorizontalPoints() {
		return numberOfHorizontalPoints;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNumberOfHorizontalPoints(int newNumberOfHorizontalPoints) {
		int oldNumberOfHorizontalPoints = numberOfHorizontalPoints;
		numberOfHorizontalPoints = newNumberOfHorizontalPoints;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_HORIZONTAL_POINTS, oldNumberOfHorizontalPoints, numberOfHorizontalPoints));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getBasicAngleOfTheInitialProductionDomain() {
		return basicAngleOfTheInitialProductionDomain;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setBasicAngleOfTheInitialProductionDomain(int newBasicAngleOfTheInitialProductionDomain) {
		int oldBasicAngleOfTheInitialProductionDomain = basicAngleOfTheInitialProductionDomain;
		basicAngleOfTheInitialProductionDomain = newBasicAngleOfTheInitialProductionDomain;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__BASIC_ANGLE_OF_THE_INITIAL_PRODUCTION_DOMAIN, oldBasicAngleOfTheInitialProductionDomain, basicAngleOfTheInitialProductionDomain));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getSubdivisionsOfBasicAngle() {
		return subdivisionsOfBasicAngle;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSubdivisionsOfBasicAngle(int newSubdivisionsOfBasicAngle) {
		int oldSubdivisionsOfBasicAngle = subdivisionsOfBasicAngle;
		subdivisionsOfBasicAngle = newSubdivisionsOfBasicAngle;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__SUBDIVISIONS_OF_BASIC_ANGLE, oldSubdivisionsOfBasicAngle, subdivisionsOfBasicAngle));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLatitudeOfFirstGridPoint() {
		return latitudeOfFirstGridPoint;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLatitudeOfFirstGridPoint(int newLatitudeOfFirstGridPoint) {
		int oldLatitudeOfFirstGridPoint = latitudeOfFirstGridPoint;
		latitudeOfFirstGridPoint = newLatitudeOfFirstGridPoint;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__LATITUDE_OF_FIRST_GRID_POINT, oldLatitudeOfFirstGridPoint, latitudeOfFirstGridPoint));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLongitudeOfFirstGridPoint() {
		return longitudeOfFirstGridPoint;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLongitudeOfFirstGridPoint(int newLongitudeOfFirstGridPoint) {
		int oldLongitudeOfFirstGridPoint = longitudeOfFirstGridPoint;
		longitudeOfFirstGridPoint = newLongitudeOfFirstGridPoint;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__LONGITUDE_OF_FIRST_GRID_POINT, oldLongitudeOfFirstGridPoint, longitudeOfFirstGridPoint));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getScanningMode() {
		return scanningMode;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setScanningMode(byte newScanningMode) {
		byte oldScanningMode = scanningMode;
		scanningMode = newScanningMode;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__SCANNING_MODE, oldScanningMode, scanningMode));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLatitudeOfLastGridPoint() {
		return latitudeOfLastGridPoint;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLatitudeOfLastGridPoint(int newLatitudeOfLastGridPoint) {
		int oldLatitudeOfLastGridPoint = latitudeOfLastGridPoint;
		latitudeOfLastGridPoint = newLatitudeOfLastGridPoint;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__LATITUDE_OF_LAST_GRID_POINT, oldLatitudeOfLastGridPoint, latitudeOfLastGridPoint));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLongitudeOfLastGridPoint() {
		return longitudeOfLastGridPoint;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLongitudeOfLastGridPoint(int newLongitudeOfLastGridPoint) {
		int oldLongitudeOfLastGridPoint = longitudeOfLastGridPoint;
		longitudeOfLastGridPoint = newLongitudeOfLastGridPoint;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__LONGITUDE_OF_LAST_GRID_POINT, oldLongitudeOfLastGridPoint, longitudeOfLastGridPoint));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getTypeOfHorizontalLine() {
		return typeOfHorizontalLine;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTypeOfHorizontalLine(byte newTypeOfHorizontalLine) {
		byte oldTypeOfHorizontalLine = typeOfHorizontalLine;
		typeOfHorizontalLine = newTypeOfHorizontalLine;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__TYPE_OF_HORIZONTAL_LINE, oldTypeOfHorizontalLine, typeOfHorizontalLine));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public short getNumberOfVerticalPoints() {
		return numberOfVerticalPoints;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNumberOfVerticalPoints(short newNumberOfVerticalPoints) {
		short oldNumberOfVerticalPoints = numberOfVerticalPoints;
		numberOfVerticalPoints = newNumberOfVerticalPoints;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_VERTICAL_POINTS, oldNumberOfVerticalPoints, numberOfVerticalPoints));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getPhysicalMeaningOfVerticalCoordinate() {
		return physicalMeaningOfVerticalCoordinate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setPhysicalMeaningOfVerticalCoordinate(byte newPhysicalMeaningOfVerticalCoordinate) {
		byte oldPhysicalMeaningOfVerticalCoordinate = physicalMeaningOfVerticalCoordinate;
		physicalMeaningOfVerticalCoordinate = newPhysicalMeaningOfVerticalCoordinate;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__PHYSICAL_MEANING_OF_VERTICAL_COORDINATE, oldPhysicalMeaningOfVerticalCoordinate, physicalMeaningOfVerticalCoordinate));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getVerticalDimensionCoordinateValuesDefinition() {
		return verticalDimensionCoordinateValuesDefinition;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setVerticalDimensionCoordinateValuesDefinition(byte newVerticalDimensionCoordinateValuesDefinition) {
		byte oldVerticalDimensionCoordinateValuesDefinition = verticalDimensionCoordinateValuesDefinition;
		verticalDimensionCoordinateValuesDefinition = newVerticalDimensionCoordinateValuesDefinition;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION, oldVerticalDimensionCoordinateValuesDefinition, verticalDimensionCoordinateValuesDefinition));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public short getNumberOfCoefficients() {
		return numberOfCoefficients;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNumberOfCoefficients(short newNumberOfCoefficients) {
		short oldNumberOfCoefficients = numberOfCoefficients;
		numberOfCoefficients = newNumberOfCoefficients;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_COEFFICIENTS, oldNumberOfCoefficients, numberOfCoefficients));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public long getCoefficientsOffset() {
		return coefficientsOffset;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCoefficientsOffset(long newCoefficientsOffset) {
		long oldCoefficientsOffset = coefficientsOffset;
		coefficientsOffset = newCoefficientsOffset;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31000__COEFFICIENTS_OFFSET, oldCoefficientsOffset, coefficientsOffset));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_HORIZONTAL_POINTS:
				return getNumberOfHorizontalPoints();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__BASIC_ANGLE_OF_THE_INITIAL_PRODUCTION_DOMAIN:
				return getBasicAngleOfTheInitialProductionDomain();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__SUBDIVISIONS_OF_BASIC_ANGLE:
				return getSubdivisionsOfBasicAngle();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LATITUDE_OF_FIRST_GRID_POINT:
				return getLatitudeOfFirstGridPoint();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LONGITUDE_OF_FIRST_GRID_POINT:
				return getLongitudeOfFirstGridPoint();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__SCANNING_MODE:
				return getScanningMode();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LATITUDE_OF_LAST_GRID_POINT:
				return getLatitudeOfLastGridPoint();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LONGITUDE_OF_LAST_GRID_POINT:
				return getLongitudeOfLastGridPoint();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__TYPE_OF_HORIZONTAL_LINE:
				return getTypeOfHorizontalLine();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_VERTICAL_POINTS:
				return getNumberOfVerticalPoints();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__PHYSICAL_MEANING_OF_VERTICAL_COORDINATE:
				return getPhysicalMeaningOfVerticalCoordinate();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION:
				return getVerticalDimensionCoordinateValuesDefinition();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_COEFFICIENTS:
				return getNumberOfCoefficients();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__COEFFICIENTS_OFFSET:
				return getCoefficientsOffset();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_HORIZONTAL_POINTS:
				setNumberOfHorizontalPoints((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__BASIC_ANGLE_OF_THE_INITIAL_PRODUCTION_DOMAIN:
				setBasicAngleOfTheInitialProductionDomain((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__SUBDIVISIONS_OF_BASIC_ANGLE:
				setSubdivisionsOfBasicAngle((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LATITUDE_OF_FIRST_GRID_POINT:
				setLatitudeOfFirstGridPoint((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LONGITUDE_OF_FIRST_GRID_POINT:
				setLongitudeOfFirstGridPoint((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__SCANNING_MODE:
				setScanningMode((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LATITUDE_OF_LAST_GRID_POINT:
				setLatitudeOfLastGridPoint((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LONGITUDE_OF_LAST_GRID_POINT:
				setLongitudeOfLastGridPoint((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__TYPE_OF_HORIZONTAL_LINE:
				setTypeOfHorizontalLine((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_VERTICAL_POINTS:
				setNumberOfVerticalPoints((Short)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__PHYSICAL_MEANING_OF_VERTICAL_COORDINATE:
				setPhysicalMeaningOfVerticalCoordinate((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION:
				setVerticalDimensionCoordinateValuesDefinition((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_COEFFICIENTS:
				setNumberOfCoefficients((Short)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__COEFFICIENTS_OFFSET:
				setCoefficientsOffset((Long)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_HORIZONTAL_POINTS:
				setNumberOfHorizontalPoints(NUMBER_OF_HORIZONTAL_POINTS_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__BASIC_ANGLE_OF_THE_INITIAL_PRODUCTION_DOMAIN:
				setBasicAngleOfTheInitialProductionDomain(BASIC_ANGLE_OF_THE_INITIAL_PRODUCTION_DOMAIN_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__SUBDIVISIONS_OF_BASIC_ANGLE:
				setSubdivisionsOfBasicAngle(SUBDIVISIONS_OF_BASIC_ANGLE_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LATITUDE_OF_FIRST_GRID_POINT:
				setLatitudeOfFirstGridPoint(LATITUDE_OF_FIRST_GRID_POINT_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LONGITUDE_OF_FIRST_GRID_POINT:
				setLongitudeOfFirstGridPoint(LONGITUDE_OF_FIRST_GRID_POINT_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__SCANNING_MODE:
				setScanningMode(SCANNING_MODE_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LATITUDE_OF_LAST_GRID_POINT:
				setLatitudeOfLastGridPoint(LATITUDE_OF_LAST_GRID_POINT_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LONGITUDE_OF_LAST_GRID_POINT:
				setLongitudeOfLastGridPoint(LONGITUDE_OF_LAST_GRID_POINT_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__TYPE_OF_HORIZONTAL_LINE:
				setTypeOfHorizontalLine(TYPE_OF_HORIZONTAL_LINE_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_VERTICAL_POINTS:
				setNumberOfVerticalPoints(NUMBER_OF_VERTICAL_POINTS_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__PHYSICAL_MEANING_OF_VERTICAL_COORDINATE:
				setPhysicalMeaningOfVerticalCoordinate(PHYSICAL_MEANING_OF_VERTICAL_COORDINATE_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION:
				setVerticalDimensionCoordinateValuesDefinition(VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_COEFFICIENTS:
				setNumberOfCoefficients(NUMBER_OF_COEFFICIENTS_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__COEFFICIENTS_OFFSET:
				setCoefficientsOffset(COEFFICIENTS_OFFSET_EDEFAULT);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_HORIZONTAL_POINTS:
				return numberOfHorizontalPoints != NUMBER_OF_HORIZONTAL_POINTS_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__BASIC_ANGLE_OF_THE_INITIAL_PRODUCTION_DOMAIN:
				return basicAngleOfTheInitialProductionDomain != BASIC_ANGLE_OF_THE_INITIAL_PRODUCTION_DOMAIN_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__SUBDIVISIONS_OF_BASIC_ANGLE:
				return subdivisionsOfBasicAngle != SUBDIVISIONS_OF_BASIC_ANGLE_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LATITUDE_OF_FIRST_GRID_POINT:
				return latitudeOfFirstGridPoint != LATITUDE_OF_FIRST_GRID_POINT_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LONGITUDE_OF_FIRST_GRID_POINT:
				return longitudeOfFirstGridPoint != LONGITUDE_OF_FIRST_GRID_POINT_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__SCANNING_MODE:
				return scanningMode != SCANNING_MODE_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LATITUDE_OF_LAST_GRID_POINT:
				return latitudeOfLastGridPoint != LATITUDE_OF_LAST_GRID_POINT_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__LONGITUDE_OF_LAST_GRID_POINT:
				return longitudeOfLastGridPoint != LONGITUDE_OF_LAST_GRID_POINT_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__TYPE_OF_HORIZONTAL_LINE:
				return typeOfHorizontalLine != TYPE_OF_HORIZONTAL_LINE_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_VERTICAL_POINTS:
				return numberOfVerticalPoints != NUMBER_OF_VERTICAL_POINTS_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__PHYSICAL_MEANING_OF_VERTICAL_COORDINATE:
				return physicalMeaningOfVerticalCoordinate != PHYSICAL_MEANING_OF_VERTICAL_COORDINATE_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION:
				return verticalDimensionCoordinateValuesDefinition != VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__NUMBER_OF_COEFFICIENTS:
				return numberOfCoefficients != NUMBER_OF_COEFFICIENTS_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31000__COEFFICIENTS_OFFSET:
				return coefficientsOffset != COEFFICIENTS_OFFSET_EDEFAULT;
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (numberOfHorizontalPoints: "); //$NON-NLS-1$
		result.append(numberOfHorizontalPoints);
		result.append(", basicAngleOfTheInitialProductionDomain: "); //$NON-NLS-1$
		result.append(basicAngleOfTheInitialProductionDomain);
		result.append(", subdivisionsOfBasicAngle: "); //$NON-NLS-1$
		result.append(subdivisionsOfBasicAngle);
		result.append(", latitudeOfFirstGridPoint: "); //$NON-NLS-1$
		result.append(latitudeOfFirstGridPoint);
		result.append(", longitudeOfFirstGridPoint: "); //$NON-NLS-1$
		result.append(longitudeOfFirstGridPoint);
		result.append(", scanningMode: "); //$NON-NLS-1$
		result.append(scanningMode);
		result.append(", latitudeOfLastGridPoint: "); //$NON-NLS-1$
		result.append(latitudeOfLastGridPoint);
		result.append(", longitudeOfLastGridPoint: "); //$NON-NLS-1$
		result.append(longitudeOfLastGridPoint);
		result.append(", typeOfHorizontalLine: "); //$NON-NLS-1$
		result.append(typeOfHorizontalLine);
		result.append(", numberOfVerticalPoints: "); //$NON-NLS-1$
		result.append(numberOfVerticalPoints);
		result.append(", physicalMeaningOfVerticalCoordinate: "); //$NON-NLS-1$
		result.append(physicalMeaningOfVerticalCoordinate);
		result.append(", verticalDimensionCoordinateValuesDefinition: "); //$NON-NLS-1$
		result.append(verticalDimensionCoordinateValuesDefinition);
		result.append(", numberOfCoefficients: "); //$NON-NLS-1$
		result.append(numberOfCoefficients);
		result.append(", coefficientsOffset: "); //$NON-NLS-1$
		result.append(coefficientsOffset);
		result.append(')');
		return result.toString();
	}

	/* (non-Javadoc)
	 * @see org.mro.grib.model.files.secondEdition.grids.impl.EarthShapeGridDefinitionImpl#initialise(java.nio.ByteBuffer)
	 */
	@Override
	public void initialise(ByteBuffer buffer) {
		super.initialise(buffer);
		numberOfHorizontalPoints =  buffer.getInt();
		basicAngleOfTheInitialProductionDomain = buffer.getInt();
		subdivisionsOfBasicAngle = buffer.getInt();
		latitudeOfFirstGridPoint = buffer.getInt();
		longitudeOfFirstGridPoint = buffer.getInt();
		scanningMode = buffer.get();
		latitudeOfLastGridPoint = buffer.getInt();
		longitudeOfLastGridPoint = buffer.getInt();
		typeOfHorizontalLine = buffer.get();
		numberOfVerticalPoints = buffer.getShort();
		physicalMeaningOfVerticalCoordinate = buffer.get();
		verticalDimensionCoordinateValuesDefinition = buffer.get();
		numberOfCoefficients = buffer.getShort();
		coefficientsOffset = buffer.position();
	}

} //GridDefinitionTemplate31000Impl
